#ifndef SIMUBOARD_GPIO_H
#define SIMUBOARD_GPIO_H

#include <stdint.h>

// GPIO引脚定义
#define GPIO_PIN_0   (1 << 0)
#define GPIO_PIN_1   (1 << 1)
#define GPIO_PIN_2   (1 << 2)
#define GPIO_PIN_3   (1 << 3)
#define GPIO_PIN_4   (1 << 4)
#define GPIO_PIN_5   (1 << 5)
#define GPIO_PIN_6   (1 << 6)
#define GPIO_PIN_7   (1 << 7)
#define GPIO_PIN_8   (1 << 8)
#define GPIO_PIN_9   (1 << 9)
#define GPIO_PIN_10  (1 << 10)
#define GPIO_PIN_11  (1 << 11)
#define GPIO_PIN_12  (1 << 12)
#define GPIO_PIN_13  (1 << 13)
#define GPIO_PIN_14  (1 << 14)
#define GPIO_PIN_15  (1 << 15)

typedef struct
{
    volatile uint16_t DIR; // 方向寄存器 (0=输入, 1=输出)
    volatile uint16_t ODR; // 输出寄存器 (0=低电平, 1=高电平)
    volatile uint16_t IDR; // 输入寄存器 (只读)
} GPIO_Struct_t;

extern GPIO_Struct_t GPIO;

#ifdef __cplusplus
extern "C" {



#endif

void GPIO_Init(void);

#ifdef __cplusplus
}
#endif

#endif //SIMUBOARD_GPIO_H
